package com.x.config;

import cn.hutool.core.util.StrUtil;
import com.ulisesbocchio.jasyptspringboot.EncryptablePropertyDetector;
import lombok.Data;
import org.springframework.util.Assert;

/**
 * the class of advance
 * <p>
 * 自定义加密属性检测器, 它会找到配置文件中包含指定前后缀的数据
 * <p>
 * .
 *
 * @author little_lunatic
 * @date 2024-06-12
 */
@Data
public class MyEncryptablePropertyDetector implements EncryptablePropertyDetector {

    /* 自定义前缀 */
    private String prefix = "PLM(";
    /* 自定义后缀 */
    private String suffix = ")";

    public MyEncryptablePropertyDetector() {
    }

    public MyEncryptablePropertyDetector(String prefix, String suffix) {
        Assert.notNull(prefix, "Prefix can't be Null");
        Assert.notNull(suffix, "Suffix can't be Null");
        this.prefix = prefix;
        this.suffix = suffix;
    }

    @Override
    public boolean isEncrypted(String s) {
        if (StrUtil.isBlank(s)) return false;
        else {
            String trimmedValue = s.trim();
            return trimmedValue.startsWith(this.prefix) && trimmedValue.endsWith(this.suffix);
        }
    }

    /**
     * 解密加密值
     *
     * @param s
     * @return
     */
    @Override
    public String unwrapEncryptedValue(String s) {
        /**
         *获取到 上面方法返回true的数据
         * 此处原数据返回，不作处理，统一在 MyEncryptor 处理
         */
        return s;
    }
}
